//
//  ViewController.m
//  TestDemo
//
//  Created by Felix Yin on 2018/4/9.
//  Copyright © 2018年 Felix Yin. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@property(nonatomic,weak) IBOutlet UIButton *changeHuggingPriorityBtn;
@property(nonatomic,weak) IBOutlet UIButton *changeCompressionResistancePriorityBtn;
@property(nonatomic,weak) IBOutlet UILabel *firstLbl;
@property(nonatomic,weak) IBOutlet UILabel *secondLbl;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.changeHuggingPriorityBtn addTarget:self action:@selector(changeHuggingPriorityBtnClick:) forControlEvents:UIControlEventTouchUpInside];
    [self.changeCompressionResistancePriorityBtn addTarget:self action:@selector(changeCompressionResistancePriorityBtnClick:) forControlEvents:UIControlEventTouchUpInside];
}

#pragma mark Event Handle

// 设置 Content Hugging Priority (内容拥抱优先级)
/*
   通过Demo 实现效果来看（FirstLbl 与 SecondLbl）：
    当FirstLbl 与 SecondLbl 同行显示时，FirstLbl 设置Left，Top，Height，Right 约束
    SecondLbl 设置 Left，Top，Height，Right 约束后
    Xib 文件会提示 错误信息 Decrease  Content Hugging Priority
    提示错误信息的原因是：
    虽然设置完两个控件的约束，但是他们两个的位置还没发确定 （两个Lbl显示内容 是动态变化的，导致两个无法确定宽度，也不知道是以谁的优先级高）
     解决办法：
     需要重新设置水平约束的优先级，可将FirstLbl 或者 SecondLbl 其中之一调高或者调低（UILayoutConstraintAxisHorizontal）
 */
- (void) changeHuggingPriorityBtnClick:(UIButton *) btn{
    [self.firstLbl setContentHuggingPriority:250 forAxis:UILayoutConstraintAxisHorizontal];
    [self.secondLbl setContentHuggingPriority:251 forAxis:UILayoutConstraintAxisHorizontal];
    self.firstLbl.text = @"Hight =======================================================Hight";
    self.secondLbl.text = @"Low =======================================================Low";
}

// 设置 Content Compression Resistance Priority (内容压缩阻力优先级)
/*
 虽然上面设置完 Content Hugging Priority 后，报错提示消失了。但当将FirstLbl 与SecondLbl 的text文本设置特别多时，接着会提示另一个错误信息 Decrease
 Content Compression Resistance Priority
 
 又一次提示错误信息的原因是：
 刚才只是设置了 拥抱优先级，也就是只设置了以谁优先位置，另一个紧跟高优先级的再设置位置 （只解决了位置问题，但没有设置显示内容优先级及 内容压缩阻力优先级）
 
 当需要FirstLbl 显示内容多时，则重新设置FirstLbl 的 ContentCompressionResistancePriority （优先级调高），反之降低优先级
 
 
 总结以上两个给出的提示错误信息：
 当遇到两个或者多个控件这种设置关系时，最好将 Content Hugging Priority  与 Content Compression Resistance Priority 一并设置，这样可以避免以上提示的两个错误
 */
- (void) changeCompressionResistancePriorityBtnClick:(UIButton *) btn{
    [self.firstLbl setContentCompressionResistancePriority:749 forAxis:UILayoutConstraintAxisHorizontal];
    [self.secondLbl setContentCompressionResistancePriority:750 forAxis:UILayoutConstraintAxisHorizontal];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end
